package com.yang.StackAndQueue;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class LeetCode225 {
    public static void main(String[] args) {

    }

    class MyStack {

        Queue<Integer> queue1;
        // 队列二用来当作仓库  当要移除某个数是就将前面的数先传出来给队列2
        Queue<Integer> queue2;

        // 初始化队列
        public MyStack() {
            queue1 = new LinkedList<>();
            queue2 = new LinkedList<>();
        }

        public void push(int x) {
            // 把元素推至栈顶，那么就是后进先出，对应队列的先进先出，那么这个元素应该先进队列，所以我们让这个元素先进二号队列，然后再把1号队列的移到二号队列
            queue2.offer(x);
            while ( !queue1.isEmpty() ){
                queue2.offer(queue1.poll());
            }
            Queue<Integer> tempQueue;
            tempQueue = queue1;
            queue1 = queue2;
            queue2 = tempQueue;

        }

        public int pop() {
            return queue1.poll();
        }

        public int top() {
            return queue1.peek();
        }

        public boolean empty() {
            return queue1.isEmpty();
        }
    }
}
